package com.haoze.nurseapp.service;

import com.haoze.common.response.Result;
import com.haoze.nurseapp.dto.TaskFileFromViewDTO;
import com.haoze.common.model.OrdersFileIndexEntity;

import java.util.List;
import java.util.Map;

/**
 * @author embed
 */
public interface TransfusionService {

    Result queryFileIdByBarCode(String qrCode, String nodeName);

    Result savePiercing(TaskFileFromViewDTO taskFileFromViewDTO);

    List getAllInfsion(String barCode, String inpatNum);

    /**
     * 结束输液
     *
     * @param qrCodeMap
     */
    void saveEndInfusion(Map<String, Object> qrCodeMap);

    /**
     * 结束输液
     *
     * @param paramMap
     */
    List<OrdersFileIndexEntity> saveEndInfusionNew(Map<String, Object> paramMap);

    /**
     * 退药
     *
     * @return
     */
    Result markBackDrug(Map<String, String> qrCodeMap);

    /**
     * 获取节点状态
     *
     * @return
     */
    Result getNodeState(String qrCode);

    /**
     * 获取退药原因
     *
     * @return
     */
    List<Map<String, String>> getReturnDic();

    /**
     * 保存文书（保存滴速）
     *
     * @param taskFileFromViewDTO
     * @return
     */
    Result saveFile(TaskFileFromViewDTO taskFileFromViewDTO);

    /**
     * 输液巡视
     *
     * @return
     */
    Result infusionInspection(String qrCode);

    Result pauseInfusion(Map<String, Object> param);

    Result queryDictByVarCode(String varCode);

    /**
     * 根据文书ID获取当前输液剩余量
     *
     * @param emrFileId
     * @param speed
     * @return
     */
    Result getSurplus(String emrFileId, String speed);

    /**
     * 新增通道获取穿刺信息返回
     *
     * @param preQrcode
     * @return
     */
    Result createChannel(String preQrcode);

    /**
     * 获取当前输液信息并预计输液结束时间
     *
     * @param emrFileId
     * @return
     */
    Map<String, Object> endInfusionInfo(String emrFileId);

    /**
     * 获取默认新增穿刺点
     *
     * @param qrCode
     * @return
     */
    Result getDefaultPuncture(String qrCode);

    /**
     * 获取输液结束方式字典内容对应字典值
     *
     * @return
     */
    Result endInfusionType();

    /**
     * 获取输液中心数据
     *
     * @param qrCode
     * @return
     */
    Result getInfusions(String qrCode);

    /**
     * 获取已完成未完成领药数量
     *
     * @param wardId
     * @param currentDate
     * @param currentTime
     * @return
     */
    Result getMedicineNum(String wardId, String currentDate, String currentTime);

    /**
     * 获取输液中心
     *
     * @param inpatNum
     * @return
     */
    Result getInfusionCenter(String inpatNum);

    Result infusionCenterList(String qrCode);
}
